

function Person() {
    this.name = 'person'
}
Person.age = 23
Person.prototype.run = function () {
    console.log(this.name)
}

// new 
let child = new Person()
child.run() // person
console.log(child.name)


// 子类prototype  Person的实例   ----------- 原型链继承

function Child1() {

}
Child1.prototype = new Person()
let child1 = new Child1()
child1.run() // person
console.log(child1.name)

// 在子类中将 父类的this绑定到子类 -----------  构造函数继承

function Child2() {
    Person.call(this)
}
let child2 = new Child2()
// child2.run() // error  child2.run is not function
console.log(child2.name)

// 原型链+ 构造函数  

function Child3() {
    Person.call(this)
}
Child3.prototype = new Person()
let child3 = new Child3()
child3.run() // person
console.log(child3.name)

// class 时 可以使用extend 继承
// ts 时 可以使用 implements  继承多个